package com.itkjb.leisurely.center.sys.model;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.Version;
import com.itkjb.leisurely.core.base.BaseModelWithOperationFields;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import java.util.Date;

/**
 * <p>
 * 系统用户
 * </p>
 *
 * @author itkjb.com
 * @since 2020-07-22
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("sys_user")
@ApiModel(value="SysUserModel-模型", description="系统用户")
public class SysUserModel extends BaseModelWithOperationFields  {

    private static final long serialVersionUID=1L;

    /**
     * id
     */
    @ApiModelProperty(value = "id")
    private String id;

    /**
     * 用户名
     */
    @ApiModelProperty(value = "用户名")
    @TableField("`username`")
    @Pattern(regexp = "^[\u4E00-\u9FA5A-Za-z0-9_]+$", message = "用户名不合法")
    private String username;

    /**
     * 密码
     */
    @ApiModelProperty(value = "密码")
    @TableField("`password`")
    private String password;

    /**
     * 手机号
     */
    @ApiModelProperty(value = "手机号")
    @TableField("`mobile`")
    private String mobile;

    /**
     * 邮箱
     */
    @ApiModelProperty(value = "邮箱")
    @TableField("`email`")
    private String email;

    /**
     * 显示的名字
     */
    @ApiModelProperty(value = "显示的名字")
    @TableField("`nickname`")
    private String nickname;

    /**
     * 创建类型 1：后台添加 ，0: 用户注册
     */
    @ApiModelProperty(value = "创建类型 1：后台添加 ，0: 用户注册")
    @TableField("`create_type`")
    private Integer createType;

    /**
     * 默认组织id
     */
    @ApiModelProperty(value = "默认组织id")
    @TableField("`def_depid`")
    private String defDepid;

    /**
     * 最后登陆时间
     */
    @ApiModelProperty(value = "最后登陆时间")
    @TableField("`last_login`")
    private Date lastLogin;

    /**
     * 最后一次登陆ip
     */
    @ApiModelProperty(value = "最后一次登陆ip")
    @TableField("`last_ip`")
    private String lastIp;

    /**
     * 最后一次登录ip地址描述
     */
    @ApiModelProperty(value = "最后一次登录ip地址描述")
    @TableField("`last_ip_des`")
    private String lastIpDes;

    /**
     * 状态 1 创建，注册；2：待完善信息 ；4：待补充调整信息  8：正常 16：账户冻结
     */
    @ApiModelProperty(value = "状态 1 创建，注册；2：待完善信息 ；4：待补充调整信息  8：正常 16：账户冻结")
    @TableField("`status`")
    private Integer status;

    /**
     * 乐观锁版本号
     */
    @ApiModelProperty(value = "乐观锁版本号")
    @Version
    @NotNull(message = "缺少版本号参数")
    @TableField("`lock_version`")
    private Long lockVersion;


}
